import java.util.Calendar;

import javax.swing.JTable;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;


public class Application {

	private CalendarWindow view;
	private ApplicationModel model;
	Application ()
	{
		view = new CalendarWindow(this);
		model = new ApplicationModel(this);
	}
	public void newDateSelected (Calendar startDate, Calendar endDate)
	{
		view.dayInfo.Update(startDate, "Masona i Darkhammera");
		createTableModel(startDate,endDate);
		view.setModel(createTableModel(startDate,endDate));
	}
	public void addNewEvent()
	{
		
	}
	public void removeEvent ()
	{
		
	}
	private DefaultTableModel createTableModel (Calendar startDate, Calendar endDate)
	{
		DefaultTableModel tmodel;
		int k=0;
		startDate.set(Calendar.HOUR_OF_DAY,0);	//zeruje godzine i minuty, aby moc uzyc equals
		startDate.set(Calendar.MINUTE,0);
		Calendar tmpDate = (Calendar)startDate.clone();	//data pomocnicza
		int y = (endDate.get(Calendar.DATE) - startDate.get(Calendar.DATE))+1;	//obliczam ile dni zostalo zaznaczonych
		int startDay = startDate.get(Calendar.DAY_OF_WEEK) - 1;	//indeks dla tablicy z dniami tygodnia
		String [] dayOfWeek = {"Pn","Wt","Sr","Cz","Pt","So","Nd"};
		String [][] data = new String[48][y];
		String [] col = new String[y];
		for(int i=0;i<y;i++)
		{
			col[i]=dayOfWeek[startDay];		//podpisanie kolumn nazwa wybranego dnia
			startDay++;
		}
		for(int i=0;i<y;i++)
		{
			tmpDate.set(Calendar.DATE, startDate.get(Calendar.DATE)+i);
			
			for(int j=0;j<model.eventsList.size();j++)
			{
				if(tmpDate.equals(model.eventsList.get(i).eventStartDate())) //sprawdzam czy w danym dniu zaczyna sie jakis event
				{
					k=model.eventsList.get(i).convertStartHour();	//obliczam indeks (godzina w tabeli) 
					data[k][i]=model.eventsList.get(i).toString(); //zapisuje w komorce informacje na temat eventu
				}
				else if(tmpDate.equals(model.eventsList.get(i).eventEndDate()))//sprawdzam czy w danym dniu konczy sie jakis event
				{
					k=model.eventsList.get(i).convertEndHour();    //obliczam indeks(godzina w tabeli)
					data[k][i]=model.eventsList.get(i).toString(); //zapisuje w komorce informacje na temat eventu
				}
			}
		}
		tmodel = new DefaultTableModel (data,col);
		return tmodel;
	}
	}
	





